This invention relates to cache subsystems for improving access to data stored on a mass storage device. More particularly this invention relates to a cache subsystem, including a hard disk drive, for improving "access time" for information stored on an optical storage device.
Access time, in the context of microcomputer memory handling, is the time it takes a memory system to present information to a microprocessor after an address has been selected. Cache is a memory subsystem for improving access time to data stored in main or "mass" memory. The cache subsystem characteristically comprises memory having a faster access time than main memory. It is by duplicating frequently-accessed main-memory data values in cache memory that access times for such data is improved.
There are several types of main memory sources in conventional microcomputers. Sources include floppy disks, hard disks and optical storage media. Caches comprising random access memory (RAM) are common for improving access time to data stored on such disks or media. RAM has an access time of approximately 150 nano-seconds (ns). This is several orders of magnitude faster than access times for mass storage devices. For example, access time for a conventional PC floppy disk drive is on the order of seconds. Access time for a conventional PC hard drive is approximately 12-60 milliseconds (ms). Compact disk read only memory (CD-ROM), one form of optical storage media, has a storage capacity of approximately 680 megabytes and an access time of approximately 300-1000 ms. Top of the line CD-ROM drives advertise access times down to 265 ms.
When RAM prices were speculated to significantly decrease, discussion of main memory systems comprising RAM were considered by chip manufacturers. Such price decreases have not occurred. To the contrary, the relative expense of RAM makes it a precious resource in the computer. It is currently unfeasible to dedicate tens of megabytes of RAM to serve as a high-capacity cache. According to this invention, however, it is desirable to define a high-capacity cache for improving access times for CD-ROM or other high capacity optical media.
Programmers typically optimize information layout on a CD-ROM to achieve the current CD-ROM access times. Straight sequential access of optical media as during video playback or audio playback typically can occur within desired specifications to provide a user with acceptable visual and sound quality. When random seeks, however, are interspersed with full-motion video and/or sound, performance (i.e., average access time) degrades. For typical multimedia and hypermedia applications, audio/video data is interspersed with program and/or graphics data. In a conventional CD-ROM encyclopedia application, a user may spend 90% of the time accessing program and graphics data and just 10% of the time accessing audio-video or animation data. (The CD-ROM itself may comprise 50% data and 50% video/audio due to the storage intensiveness of video/audio.) A conventional CD-ROM drive meeting multimedia specifications requires a sustained throughput rate of 150 KB/second. It is the occasions when random seeks are interspersed with the full motion video or animation that problems typically arise. Using a conventional RAM cache of approximately 256 KB, the cache will fill with audio-video data very quickly. There already is significant contention for the RAM resources by the operating system. Using all of the available cache for maintaining full motion video would be unacceptable. Accordingly, a larger high-capacity cache is needed.
As RAM costs approximately $80/MB in 1994, implementation of a high-capacity cache would run approximately $1600 for merely a 20 MB high-capacity cache. Such an implementation is unfeasible. Accordingly, there is a need for an alternative structure for implementing a CD-ROM cache. In particular, there is a need for a more cost-efficient, yet technically-effective high-capacity cache structure.
Under conventional microcomputer operating conditions, a cache improves access time some of the time. Of significance is that there are transient periods during which the cache is not improving microcomputer performance. This is because conventional cache implementation methodologies call for caching substantially all data transfers. This is inefficient. It is generally accepted that 80-90% of computing time is spent processing 10-20% of the code/data, while the other 10-20% of the time is spent processing the other 80-90% of the code/data. It is for the frequently executed 10-20% of code/data that a cache provides increased performance. Caching the remaining code/data leads to little, if any, performance increase. In a CD-ROM application, however, caching this other 90% of the code/data may consume a significant portion of cache resources. For a high-capacity cache it is too costly to allocate tens of megabytes of space to this 80-90% of code/data that is infrequently accessed. Accordingly, there is a need for a more effective cache implementation which optimizes cache usage.
As described in the summary of invention and detailed description, applicant's cache, according to several embodiments, includes a portion of hard disk memory. A hard disk drive provides access times generally 10 times faster than CD-ROM access times. However, when data files stored on a hard disk are fragmented, hard drive access performance degrades. If the degradation causes access to be no faster than access to a CD-ROM, there is no point in using the hard disk as a cache. Accordingly, it is desirable to minimize fragmentation of a hard disk area being used for cache.
As a high capacity cache will take a significant period of time to fill up, it is desirous to preserve the cache contents in the event of media changes (e.g., CD-ROM changes) and power shutdowns. Accordingly, there is a need for a nonvolatile cache and a need for associating stored data with a particular CD-ROM.